Riparian Maps

1. Import AOI

library(sf)

aoi_00 = geodata::gadm(
  country="CAN", level=0, 
  path="./assets/SHP/") |> 
  sf::st_as_sf()

aoi_01  = geodata::gadm(
  country="CAN", level=1, 
  path="./assets/SHP/") |> 
  sf::st_as_sf()

aoi_02  = geodata::gadm(
  country="CAN", level=2, 
  path="./assets/SHP/") |> 
  sf::st_as_sf()

aoi_03  = geodata::gadm(
  country="CAN", level=3, 
  path="./assets/SHP/") |> 
  sf::st_as_sf()

# ------------ #
# BC Albers    #
# ------------ #
crs_master = "EPSG:3005"
sf::st_transform(aoi_00, crs_master)
sf::st_transform(aoi_01, crs_master)
sf::st_transform(aoi_02, crs_master)
sf::st_transform(aoi_03, crs_master)

sf::st_write(aoi_00, "./assets/SHP/aoi_00.shp", delete_dsn = T)
sf::st_write(aoi_01, "./assets/SHP/aoi_01.shp", delete_dsn = T)
sf::st_write(aoi_02, "./assets/SHP/aoi_02.shp", delete_dsn = T)
sf::st_write(aoi_03, "./assets/SHP/aoi_03.shp", delete_dsn = T)

Extract Shoreline

library(osmdata)
library(rmapshaper)

bc_province = sf::st_read("./assets/SHP/aoi_01.shp", quiet=T) |>
  sf::st_make_valid() |> dplyr::filter(NAME_1 == "British Columbia") 
bc_districts = sf::st_read("./assets/SHP/aoi_02.shp", quiet=T)|>
  sf::st_make_valid() |> dplyr::filter(NAME_1 == "British Columbia")
bc_counties = sf::st_read("./assets/SHP/aoi_03.shp", quiet=T)|>
  sf::st_make_valid() |> dplyr::filter(NAME_1 == "British Columbia")

# ---------------------------  #
# Note: BBOX needs CRS forcing #
island_extent = sf::st_bbox(c(
  xmin = -129.5, ymin = 48.1, 
  xmax = -123.0, ymax = 51.0), 
  crs = st_crs(4326)) |> 
  sf::st_as_sfc()
island_extent_sf = sf::st_as_sf(island_extent) 

shoreline_input <- osmdata::opq(bbox = sf::st_bbox(island_extent_sf)) |>
  osmdata::add_osm_feature(key = "natural", value = "coastline") |>
  osmdata::osmdata_sf() |> {\(x) x$osm_lines}() |>
  sf::st_intersection(island_extent_sf) |>
  sf::st_union() |>
  sf::st_polygonize() |>
  sf::st_collection_extract("POLYGON")

# `rmapshaper::ms_clip()` requires perimiter polygon shell only
shoreline_shell <- shoreline_input %>%
  sf::st_union() %>%
  sf::st_as_sf()|> 
  sf::st_transform(crs_master)

island_shoreline <- bc_districts %>%
  sf::st_filter(shoreline_input, .predicate = st_intersects) %>%
  rmapshaper::ms_dissolve() %>% 
  rmapshaper::ms_clip(shoreline_shell)|> 
  sf::st_transform(crs_master)

island_districts <- bc_districts %>%
  sf::st_filter(shoreline_input, .predicate = st_intersects) %>%
  rmapshaper::ms_simplify(keep = 0.95) %>%        
  rmapshaper::ms_clip(shoreline_shell)|> 
  sf::st_transform(crs_master)             

island_counties <- bc_counties %>%
  sf::st_filter(shoreline_input, .predicate = st_intersects) %>%
  rmapshaper::ms_simplify(keep = 0.95) %>%        
  rmapshaper::ms_clip(shoreline_shell)|> 
  sf::st_transform(crs_master)             

sf::st_write(island_districts, "./assets/SHP/island_districts.shp", delete_dsn=T)
sf::st_write(island_counties, "./assets/SHP/island_counties.shp", delete_dsn=T)
sf::st_write(island_shoreline, "./assets/SHP/island_shoreline.shp", delete_dsn=T)
sf::st_write(shoreline_input, "./assets/SHP/shoreline_input.shp", delete_dsn=T)
sf::st_write(shoreline_shell, "./assets/SHP/shoreline_shell.shp", delete_dsn=T)

tmap::tmap_mode("view")
tmap::tm_shape(island_counties) + tm_borders(lwd=0) +
  tmap::tm_shape(island_shoreline) + tm_borders(col = "black", lwd=4) +
  tmap::tm_shape(island_districts) + tm_borders(col = "purple", lwd=1.5) +
  tmap::tm_shape(island_counties) + tm_borders(col = "yellow", lwd=0.5) +
  tmap::tm_basemap("Esri.WorldImagery") -> tm01_live
tm01_live

2. Process DEM

Note: More efficient conditioning algorithms available with RichDEM library 1

crs_master = "EPSG:3005"
island_shoreline = sf::st_read("./assets/SHP/island_shoreline.shp", quiet=T)

# z = 12: 1-Arc Second 
# z = 11: 3-Arc Second 
# z = 10: 5-Arc Second 
dem_7arc = elevatr::get_elev_raster(island_shoreline, z=9,clip="locations")|>
  terra::rast()|> 
  terra::crop(terra::vect(island_shoreline)) |>  
  terra::project(crs_master)

#Process DEM by breaching & filling depressions & flats
dem_condt_7arc  = dem_7arc |> 
  flowdem::breach() |>
  flowdem::fill(epsilon=T) 
  #flowdem::fill_basins() # costal basins

# Calculate flow direction & accumulation
dem_dir_7arc = dem_condt_7arc |> flowdem::dirs(mode="d8")
dem_dir_5arc = dem_condt_5arc |> flowdem::dirs(mode="d8")
dem_acc_7arc = dem_dir_7arc |> flowdem::accum(mode="d8")
dem_acc_5arc = dem_dir_5arc |> flowdem::accum(mode="d8")

#tmap::tm_shape(dem) + 
#  tmap::tm_raster(
#    col.scale = tm_scale_continuous(values = "viridis"),
#    col.legend = tm_legend(title = "Elevation (m)", reverse = T)) + 
#  tmap::tm_graticules(lines = T, labels.rot = c(0, 90), lwd = 0.2) +
#  tmap::tm_scalebar(position = c("LEFT", "BOTTOM"), text.size = 0.5) + 
#  tmap::tm_compass(color.dark="gray60",text.color="gray60")+
#  tmap::tm_basemap("Esri.WorldImagery")
writeRaster(dem_condt_7arc, "./assets/TIF/dem_7arc_condt.tif", overwrite=T)
writeRaster(dem_condt_5arc, "./assets/TIF/dem_5arc_condt.tif", overwrite=T)
writeRaster(dem_dir_7arc, "./assets/TIF/dem_7arc_dir.tif", overwrite=T)
writeRaster(dem_dir_5arc, "./assets/TIF/dem_5arc_dir.tif", overwrite=T)
writeRaster(dem_acc_7arc, "./assets/TIF/dem_7arc_acc.tif", overwrite=T)
writeRaster(dem_acc_5arc, "./assets/TIF/dem_5arc_acc.tif", overwrite=T)

3. Delineate Streams

# Calculate Flow Accumulation Distribution
par(mfrow = c(2, 2))
thresholds <- c(1, 2, 10, 20, 50, 100)

for(thresholds in c(1, 2, 10, 20, 50, 100)) {
  count <- sum(acc_values >= thresholds, na.rm = TRUE)
   percent <- (count / length(acc_values)) * 100
   cat("Threshold", thresholds, ":", count, "cells (", round(percent, 2), "%)\n")
}

acc_values <- values(dem_acc, na.rm = TRUE)
quantile(acc_values, probs = c(0.5, 0.9, 0.95, 0.99, 0.995, 0.999), na.rm = TRUE)
upper_limit <- quantile(acc_values, 0.99, na.rm = TRUE)
acc_subset <- acc_values[acc_values <= upper_limit]
low_vals <- acc_values[acc_values <= 10 & acc_values >= 2]
med_vals <- acc_values[acc_values <= 50 & acc_values >= 2]
high_vals <- acc_values[acc_values <= 100 & acc_values >= 2]
hist(low_vals, breaks = 10, main = "Flow Accumulation: 1-10", xlab = "Accumulation")
hist(med_vals, breaks = 25, main = "Flow Accumulation: 1-50", xlab = "Accumulation")
hist(high_vals, breaks = 50, main = "Flow Accumulation: 1-100", xlab = "Accumulation")
#hist(acc_subset, breaks = 500, main="Flow Accumulation (<99%)", xlab="Flow Accumulation")
hist(log10(acc_values+1),breaks=50,main="Log10 Accumulation)", xlab="Log10 Accumulation")

# Delineate streams using flow accumulation
streams_binary = dem_acc > 100
streams = sf::st_as_sf(as.polygons(streams_binary == 1))
st_write(streams, "./assets/SHP/streams_100.shp", delete_dsn=T)
NA Threshold 1 : 3803857 cells ( 100 %)
NA Threshold 2 : 2858053 cells ( 75.14 %)
NA Threshold 10 : 590109 cells ( 15.51 %)
NA Threshold 20 : 362517 cells ( 9.53 %)
NA Threshold 50 : 236072 cells ( 6.21 %)
NA Threshold 100 : 171608 cells ( 4.51 %)
NA      50%      90%      95%      99%    99.5%    99.9% 
NA     3.00    18.00    79.00  2147.00  6578.00 41238.58

4. Build Map

lakes = sf::st_read("./assets/SHP/lakes.shp") |> sf::st_cast("POLYGON")
basins= sf::st_read("./assets/SHP/basins.shp") |> sf::st_cast("MULTIPOLYGON")
rivers= sf::st_read("./assets/SHP/streams.shp")|> sf::st_cast("MULTILINESTRING")
dem   = terra::rast("./assets/TIF/dem_7arc_condt.tif") 
h <- nrow(dem)
w <- ncol(dem)

matrix = rayshader::raster_to_matrix(dem) 

matrix |>
  rayshader::height_shade() |>
  rayshader::add_overlay(
    rayshader::generate_line_overlay(
      geometry   = rivers,
      extent     = dem,
      heightmap  = matrix,
      color      = "royalblue",
      linewidth  = 3,
      ), alphalayer = 1
    ) |>
  rayshader::plot_3d(
    matrix,
    zscale       = 69,
    solid        = T,
    shadow       = T,
    shadow_darkness = 2,
    background   = "white",
    windowsize   = 800,
    zoom         = 0.8,
    phi          = 89.9,
    theta        = 0 
  )

#rayshader::render_snapshot(
#  rayvertex_lighting  = T,
#  rayvertex_lights    = 
#    rayvertex::directional_light(
#      intensity       = 1.5, 
#      color           = "#F3EEE1", 
#      direction       = c(-1.5,1,-1.5)
#      ),
#  rayvertex_shadow_map= T, 
#  software_render     = T
#  )

5. Render Map

rayshader::render_highquality(
  samples           = 400, 
  sample_method     = "sobol", 
  parallel          = T, 
  environment_light = "kiara_1_dawn_2k.hdr", 
  light             = T, 
  width             = w, 
  height            = h,
  preview           = T, 
  interactive       = F,
  backgroundhigh="#FFFFFF",
  backgroundlow="#FFFFFF"
  )

devtools::session_info()
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.0 (2023-04-21)
 os       macOS 15.7.1
 system   aarch64, darwin20
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       America/Vancouver
 date     2025-10-09
 pandoc   3.6.1 @ /usr/local/bin/ (via rmarkdown)
 quarto   1.7.33 @ /usr/local/bin/quarto

─ Packages ───────────────────────────────────────────────────────────────────
 package           * version    date (UTC) lib source
 abind             * 1.4-8      2024-09-12 [1] CRAN (R 4.3.3)
 backports           1.5.0      2024-05-23 [1] CRAN (R 4.3.3)
 base64enc           0.1-3      2015-07-28 [1] CRAN (R 4.3.3)
 bit                 4.6.0      2025-03-06 [1] CRAN (R 4.3.3)
 bit64               4.6.0-1    2025-01-16 [1] CRAN (R 4.3.3)
 bitops              1.0-9      2024-10-03 [1] CRAN (R 4.3.3)
 boot                1.3-32     2025-08-29 [1] CRAN (R 4.3.0)
 brew                1.0-10     2023-12-16 [1] CRAN (R 4.3.3)
 brio                1.1.5      2024-04-24 [1] CRAN (R 4.3.3)
 broom               1.0.8      2025-03-28 [1] CRAN (R 4.3.3)
 bslib               0.9.0      2025-01-30 [1] CRAN (R 4.3.3)
 cachem              1.1.0      2024-05-16 [1] CRAN (R 4.3.3)
 callr               3.7.6      2024-03-25 [1] CRAN (R 4.3.3)
 car                 3.1-3      2024-09-27 [1] CRAN (R 4.3.3)
 carData             3.0-5      2022-01-06 [1] CRAN (R 4.3.3)
 caret               7.0-1      2024-12-10 [1] CRAN (R 4.3.3)
 class               7.3-23     2025-01-01 [1] CRAN (R 4.3.3)
 classInt            0.4-11     2025-01-08 [1] CRAN (R 4.3.3)
 cli               * 3.6.5      2025-04-23 [1] CRAN (R 4.3.3)
 clue                0.3-66     2024-11-13 [1] CRAN (R 4.3.3)
 cluster             2.1.8.1    2025-03-12 [1] CRAN (R 4.3.3)
 codetools           0.2-20     2024-03-31 [1] CRAN (R 4.3.1)
 colorspace          2.1-1      2024-07-26 [1] CRAN (R 4.3.3)
 cols4all          * 0.9        2025-08-28 [1] CRAN (R 4.3.0)
 coro                1.1.0      2024-11-05 [1] CRAN (R 4.3.3)
 covr              * 3.6.4      2023-11-09 [1] CRAN (R 4.3.1)
 cowplot           * 1.2.0      2025-07-07 [1] CRAN (R 4.3.3)
 crayon              1.5.3      2024-06-20 [1] CRAN (R 4.3.3)
 crosstalk           1.2.2      2025-08-26 [1] CRAN (R 4.3.0)
 data.table          1.17.8     2025-07-10 [1] CRAN (R 4.3.3)
 DBI                 1.2.3      2024-06-02 [1] CRAN (R 4.3.3)
 deldir              2.0-4      2024-02-28 [1] CRAN (R 4.3.3)
 dendextend        * 1.19.1     2025-07-15 [1] CRAN (R 4.3.0)
 devtools            2.4.5      2022-10-11 [1] CRAN (R 4.3.0)
 DiagrammeR        * 1.0.11     2024-02-02 [1] CRAN (R 4.3.1)
 dichromat           2.0-0.1    2022-05-02 [1] CRAN (R 4.3.3)
 digest            * 0.6.37     2024-08-19 [1] CRAN (R 4.3.3)
 doParallel          1.0.17     2022-02-07 [1] CRAN (R 4.3.3)
 downlit           * 0.4.4      2024-06-10 [1] CRAN (R 4.3.3)
 dplyr             * 1.1.4      2023-11-17 [1] CRAN (R 4.3.1)
 dtw               * 1.23-1     2022-09-19 [1] CRAN (R 4.3.3)
 dtwclust          * 6.0.0      2024-07-23 [1] CRAN (R 4.3.3)
 e1071               1.7-16     2024-09-16 [1] CRAN (R 4.3.3)
 elevatr           * 0.99.0     2023-09-12 [1] CRAN (R 4.3.0)
 ellipsis            0.3.2      2021-04-29 [1] CRAN (R 4.3.3)
 evaluate            1.0.5      2025-08-27 [1] CRAN (R 4.3.0)
 exactextractr     * 0.10.0     2023-09-20 [1] CRAN (R 4.3.1)
 extrafont           0.19       2023-01-18 [1] CRAN (R 4.3.3)
 extrafontdb         1.0        2012-06-11 [1] CRAN (R 4.3.3)
 farver              2.1.2      2024-05-13 [1] CRAN (R 4.3.3)
 fastmap             1.2.0      2024-05-15 [1] CRAN (R 4.3.3)
 flexclust           1.5.0      2025-02-28 [1] CRAN (R 4.3.3)
 flowdem           * 0.2        2025-09-14 [1] Github (KennethTM/flowdem@98cdb20)
 FNN               * 1.1.4.1    2024-09-22 [1] CRAN (R 4.3.3)
 forcats           * 1.0.0      2023-01-29 [1] CRAN (R 4.3.0)
 foreach             1.5.2      2022-02-02 [1] CRAN (R 4.3.3)
 Formula             1.2-5      2023-02-24 [1] CRAN (R 4.3.3)
 fs                  1.6.6      2025-04-12 [1] CRAN (R 4.3.3)
 future            * 1.67.0     2025-07-29 [1] CRAN (R 4.3.0)
 future.apply        1.20.0     2025-06-06 [1] CRAN (R 4.3.0)
 gdalUtilities     * 1.2.5      2023-08-10 [1] CRAN (R 4.3.0)
 generics            0.1.4      2025-05-09 [1] CRAN (R 4.3.3)
 geodata           * 0.6-2      2024-06-10 [1] CRAN (R 4.3.3)
 geojsonsf         * 2.0.3      2022-05-30 [1] CRAN (R 4.3.3)
 geos              * 0.2.4      2023-11-30 [1] CRAN (R 4.3.3)
 ggmap             * 4.0.1      2025-04-07 [1] CRAN (R 4.3.3)
 ggplot2           * 3.5.2      2025-04-09 [1] CRAN (R 4.3.3)
 ggplotify         * 0.1.2      2023-08-09 [1] CRAN (R 4.3.0)
 ggpubr            * 0.6.1      2025-06-27 [1] CRAN (R 4.3.3)
 ggrepel           * 0.9.6      2024-09-07 [1] CRAN (R 4.3.3)
 ggsignif            0.6.4      2022-10-13 [1] CRAN (R 4.3.0)
 ggspatial         * 1.1.10     2025-08-24 [1] CRAN (R 4.3.0)
 ggstats           * 0.10.0     2025-07-02 [1] CRAN (R 4.3.3)
 giscoR            * 0.6.1      2025-08-11 [1] Github (rOpenGov/giscoR@adfed30)
 globals             0.18.0     2025-05-08 [1] CRAN (R 4.3.0)
 glue                1.8.0      2024-09-30 [1] CRAN (R 4.3.3)
 gower               1.0.2      2024-12-17 [1] CRAN (R 4.3.3)
 gridExtra           2.3        2017-09-09 [1] CRAN (R 4.3.3)
 gridGraphics        0.5-1      2020-12-13 [1] CRAN (R 4.3.3)
 gtable              0.3.6      2024-10-25 [1] CRAN (R 4.3.3)
 hardhat             1.4.2      2025-08-20 [1] CRAN (R 4.3.0)
 hdf5r             * 1.3.12     2025-01-20 [1] CRAN (R 4.3.3)
 hexbin              1.28.5     2024-11-13 [1] CRAN (R 4.3.3)
 hms                 1.1.3      2023-03-21 [1] CRAN (R 4.3.0)
 htmltools         * 0.5.8.1    2024-04-04 [1] CRAN (R 4.3.3)
 htmlwidgets         1.6.4      2023-12-06 [1] CRAN (R 4.3.1)
 httpuv              1.6.16     2025-04-16 [1] CRAN (R 4.3.3)
 httr              * 1.4.7      2023-08-15 [1] CRAN (R 4.3.0)
 httr2             * 1.2.1      2025-07-22 [1] CRAN (R 4.3.0)
 interp              1.1-6      2024-01-26 [1] CRAN (R 4.3.3)
 ipred               0.9-15     2024-07-18 [1] CRAN (R 4.3.3)
 iterators           1.0.14     2022-02-05 [1] CRAN (R 4.3.3)
 jpeg                0.1-11     2025-03-21 [1] CRAN (R 4.3.3)
 jquerylib           0.1.4      2021-04-26 [1] CRAN (R 4.3.3)
 jsonlite          * 2.0.0      2025-03-27 [1] CRAN (R 4.3.3)
 KernSmooth          2.23-26    2025-01-01 [1] CRAN (R 4.3.3)
 knitr               1.50       2025-03-16 [1] CRAN (R 4.3.3)
 later               1.4.4      2025-08-27 [1] CRAN (R 4.3.0)
 lattice           * 0.22-7     2025-04-02 [1] CRAN (R 4.3.3)
 latticeExtra        0.6-30     2022-07-04 [1] CRAN (R 4.3.3)
 lava                1.8.1      2025-01-12 [1] CRAN (R 4.3.3)
 lazyeval            0.2.2      2019-03-15 [1] CRAN (R 4.3.3)
 leafem            * 0.2.5      2025-08-28 [1] CRAN (R 4.3.0)
 leafgl            * 0.2.2      2024-11-13 [1] CRAN (R 4.3.3)
 leaflegend          1.2.1      2024-05-09 [1] CRAN (R 4.3.3)
 leaflet           * 2.2.2      2024-03-26 [1] CRAN (R 4.3.1)
 leaflet.providers * 2.0.0      2023-10-17 [1] CRAN (R 4.3.3)
 leafpop             0.1.0      2021-05-22 [1] CRAN (R 4.3.0)
 leafsync            0.1.0      2019-03-05 [1] CRAN (R 4.3.0)
 libgeos           * 3.11.1-3   2025-03-19 [1] CRAN (R 4.3.3)
 lifecycle           1.0.4      2023-11-07 [1] CRAN (R 4.3.3)
 listenv             0.9.1      2024-01-29 [1] CRAN (R 4.3.3)
 logger              0.4.0      2024-10-22 [1] CRAN (R 4.3.3)
 lubridate         * 1.9.4      2024-12-08 [1] CRAN (R 4.3.3)
 luz               * 0.5.0      2025-07-29 [1] CRAN (R 4.3.0)
 lwgeom            * 0.2-14     2024-02-21 [1] CRAN (R 4.3.1)
 magrittr            2.0.4      2025-09-12 [1] CRAN (R 4.3.0)
 mapedit           * 0.7.0      2025-04-20 [1] CRAN (R 4.3.3)
 maptiles          * 0.10.0     2025-05-07 [1] CRAN (R 4.3.3)
 mapview           * 2.11.2     2023-10-13 [1] CRAN (R 4.3.1)
 MASS                7.3-60.0.1 2024-01-13 [1] CRAN (R 4.3.1)
 Matrix              1.6-5      2024-01-11 [1] CRAN (R 4.3.1)
 memoise             2.0.1      2021-11-26 [1] CRAN (R 4.3.3)
 mgcv              * 1.9-3      2025-04-04 [1] CRAN (R 4.3.0)
 microbenchmark      1.5.0      2024-09-04 [1] CRAN (R 4.3.3)
 mime                0.13       2025-03-17 [1] CRAN (R 4.3.3)
 miniUI              0.1.2      2025-04-17 [1] CRAN (R 4.3.3)
 ModelMetrics        1.2.2.2    2020-03-17 [1] CRAN (R 4.3.3)
 modeltools          0.2-24     2025-05-02 [1] CRAN (R 4.3.3)
 ncdf4             * 1.24       2025-03-25 [1] CRAN (R 4.3.3)
 nlme              * 3.1-168    2025-03-31 [1] CRAN (R 4.3.3)
 nnet              * 7.3-20     2025-01-01 [1] CRAN (R 4.3.3)
 openxlsx          * 4.2.8      2025-01-25 [1] CRAN (R 4.3.3)
 pacman              0.5.1      2019-03-11 [1] CRAN (R 4.3.3)
 parallelly          1.45.1     2025-07-24 [1] CRAN (R 4.3.0)
 pillar              1.11.0     2025-07-04 [1] CRAN (R 4.3.3)
 pkgbuild            1.4.8      2025-05-26 [1] CRAN (R 4.3.3)
 pkgconfig           2.0.3      2019-09-22 [1] CRAN (R 4.3.3)
 pkgload             1.4.0      2024-06-28 [1] CRAN (R 4.3.3)
 plotly            * 4.11.0     2025-06-19 [1] CRAN (R 4.3.3)
 plyr                1.8.9      2023-10-02 [1] CRAN (R 4.3.3)
 png                 0.1-8      2022-11-29 [1] CRAN (R 4.3.3)
 prettyunits         1.2.0      2023-09-24 [1] CRAN (R 4.3.3)
 pROC                1.19.0.1   2025-07-31 [1] CRAN (R 4.3.0)
 processx            3.8.6      2025-02-21 [1] CRAN (R 4.3.3)
 prodlim             2025.04.28 2025-04-28 [1] CRAN (R 4.3.3)
 profvis             0.4.0      2024-09-20 [1] CRAN (R 4.3.3)
 progress            1.2.3      2023-12-06 [1] CRAN (R 4.3.1)
 progressr           0.15.1     2024-11-22 [1] CRAN (R 4.3.3)
 PROJ              * 0.6.0      2025-04-03 [1] CRAN (R 4.3.3)
 proj4             * 1.0-15     2025-03-21 [1] CRAN (R 4.3.3)
 promises            1.3.3      2025-05-29 [1] CRAN (R 4.3.3)
 proxy             * 0.4-27     2022-06-09 [1] CRAN (R 4.3.3)
 ps                  1.9.1      2025-04-12 [1] CRAN (R 4.3.3)
 purrr             * 1.1.0      2025-07-10 [1] CRAN (R 4.3.0)
 R6                  2.6.1      2025-02-15 [1] CRAN (R 4.3.3)
 randomForest      * 4.7-1.2    2024-09-22 [1] CRAN (R 4.3.3)
 rappdirs            0.3.3      2021-01-31 [1] CRAN (R 4.3.3)
 raster            * 3.6-32     2025-03-28 [1] CRAN (R 4.3.3)
 rasterVis         * 0.51.6     2023-11-01 [1] CRAN (R 4.3.3)
 rayshader         * 0.37.3     2024-02-21 [1] CRAN (R 4.3.1)
 rayvertex         * 0.12.0     2025-02-03 [1] CRAN (R 4.3.3)
 RColorBrewer      * 1.1-3      2022-04-03 [1] CRAN (R 4.3.3)
 Rcpp                1.1.0      2025-07-02 [1] CRAN (R 4.3.3)
 RcppParallel        5.1.11-1   2025-08-27 [1] CRAN (R 4.3.0)
 RCurl               1.98-1.17  2025-03-22 [1] CRAN (R 4.3.3)
 readr             * 2.1.5      2024-01-10 [1] CRAN (R 4.3.1)
 recipes             1.3.1      2025-05-21 [1] CRAN (R 4.3.3)
 remotes             2.5.0      2024-03-17 [1] CRAN (R 4.3.3)
 reshape2            1.4.4      2020-04-09 [1] CRAN (R 4.3.0)
 rex                 1.2.1      2021-11-26 [1] CRAN (R 4.3.3)
 rgl               * 1.3.24     2025-06-25 [1] CRAN (R 4.3.3)
 rlang               1.1.6      2025-04-11 [1] CRAN (R 4.3.3)
 rmarkdown           2.29       2024-11-04 [1] CRAN (R 4.3.3)
 rpart               4.1.24     2025-01-07 [1] CRAN (R 4.3.3)
 rsconnect         * 1.5.1      2025-08-28 [1] CRAN (R 4.3.0)
 RSpectra            0.16-2     2024-07-18 [1] CRAN (R 4.3.3)
 rstatix             0.7.2      2023-02-01 [1] CRAN (R 4.3.0)
 RStoolbox         * 1.0.2.1    2025-02-03 [1] CRAN (R 4.3.3)
 rstudioapi          0.17.1     2024-10-22 [1] CRAN (R 4.3.3)
 rts               * 1.1-14     2023-10-01 [1] CRAN (R 4.3.3)
 Rttf2pt1            1.3.12     2023-01-22 [1] CRAN (R 4.3.3)
 s2                * 1.1.9      2025-05-23 [1] CRAN (R 4.3.3)
 sass                0.4.10     2025-04-11 [1] CRAN (R 4.3.3)
 satellite           1.0.6      2025-08-21 [1] CRAN (R 4.3.0)
 scales            * 1.4.0      2025-04-24 [1] CRAN (R 4.3.3)
 sessioninfo         1.2.3      2025-02-05 [1] CRAN (R 4.3.3)
 sf                * 1.0-22     2025-08-25 [1] Github (r-spatial/sf@3660edf)
 shiny               1.11.1     2025-07-03 [1] CRAN (R 4.3.3)
 shinyjs             2.1.0      2021-12-23 [1] CRAN (R 4.3.0)
 shinyWidgets        0.9.0      2025-02-21 [1] CRAN (R 4.3.3)
 sp                * 2.2-0      2025-02-01 [1] CRAN (R 4.3.3)
 spacesXYZ           1.6-0      2025-06-06 [1] CRAN (R 4.3.3)
 spData            * 2.3.4      2025-01-08 [1] CRAN (R 4.3.3)
 spdep             * 1.4-1      2025-08-31 [1] CRAN (R 4.3.0)
 stars             * 0.6-8      2025-02-01 [1] CRAN (R 4.3.3)
 stringi             1.8.7      2025-03-27 [1] CRAN (R 4.3.3)
 stringr           * 1.5.2      2025-09-08 [1] CRAN (R 4.3.0)
 supercells        * 1.0.0      2024-02-11 [1] CRAN (R 4.3.1)
 survival            3.8-3      2024-12-17 [1] CRAN (R 4.3.3)
 svglite             2.2.1      2025-05-12 [1] CRAN (R 4.3.3)
 systemfonts         1.2.3      2025-04-30 [1] CRAN (R 4.3.3)
 terra             * 1.8-60     2025-07-21 [1] CRAN (R 4.3.0)
 terrainr          * 0.7.6      2025-07-25 [1] CRAN (R 4.3.0)
 testthat          * 3.2.3      2025-01-13 [1] CRAN (R 4.3.3)
 textshaping         1.0.3      2025-09-02 [1] CRAN (R 4.3.0)
 tibble            * 3.3.0      2025-06-08 [1] CRAN (R 4.3.3)
 tidyr             * 1.3.1      2024-01-24 [1] CRAN (R 4.3.1)
 tidyselect          1.2.1      2024-03-11 [1] CRAN (R 4.3.1)
 tidyterra         * 0.7.2      2025-04-14 [1] CRAN (R 4.3.3)
 tidyverse         * 2.0.0      2023-02-22 [1] CRAN (R 4.3.0)
 timechange          0.3.0      2024-01-18 [1] CRAN (R 4.3.3)
 timeDate            4041.110   2024-09-22 [1] CRAN (R 4.3.3)
 tmap              * 4.1        2025-05-12 [1] CRAN (R 4.3.3)
 tmaptools         * 3.2        2025-01-13 [1] CRAN (R 4.3.3)
 torch               0.16.0     2025-08-21 [1] CRAN (R 4.3.0)
 tzdb                0.5.0      2025-03-15 [1] CRAN (R 4.3.3)
 unifir              0.2.4      2024-02-01 [1] CRAN (R 4.3.3)
 units               0.8-7      2025-03-11 [1] CRAN (R 4.3.3)
 urlchecker          1.0.1      2021-11-30 [1] CRAN (R 4.3.3)
 usethis             3.1.0      2024-11-26 [1] CRAN (R 4.3.3)
 uuid                1.2-1      2024-07-29 [1] CRAN (R 4.3.3)
 vctrs               0.6.5      2023-12-01 [1] CRAN (R 4.3.3)
 viridis             0.6.5      2024-01-29 [1] CRAN (R 4.3.1)
 viridisLite         0.4.2      2023-05-02 [1] CRAN (R 4.3.3)
 visNetwork          2.1.2      2022-09-29 [1] CRAN (R 4.3.0)
 withr               3.0.2      2024-10-28 [1] CRAN (R 4.3.3)
 wk                  0.9.4      2024-10-11 [1] CRAN (R 4.3.3)
 xfun                0.53       2025-08-19 [1] CRAN (R 4.3.0)
 xgboost           * 1.7.11.1   2025-05-15 [1] CRAN (R 4.3.3)
 XML                 3.99-0.18  2025-01-01 [1] CRAN (R 4.3.3)
 xtable              1.8-4      2019-04-21 [1] CRAN (R 4.3.3)
 xts               * 0.14.1     2024-10-15 [1] CRAN (R 4.3.3)
 yaml                2.3.10     2024-07-26 [1] CRAN (R 4.3.3)
 yulab.utils         0.2.1      2025-08-19 [1] CRAN (R 4.3.0)
 zeallot             0.2.0      2025-05-27 [1] CRAN (R 4.3.3)
 zip                 2.3.3      2025-05-13 [1] CRAN (R 4.3.3)
 zoo               * 1.8-14     2025-04-10 [1] CRAN (R 4.3.3)

 [1] /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library
 * ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────

Footnotes

  1. Breach-fill algorithm by Lindsay’s paper (2016) “Efficient hybrid breaching-filling sink removal methods for flow path enforcement in digital elevation models: Efficient Hybrid Sink Removal Methods for Flow Path Enforcement: (Hydrological Processes 30, 846–857. doi:10.1002/hyp.10648) -> flowdem::comp_breach_lindsay2016(dem)↩︎